﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;

namespace DienThoai
{
    /// <summary>
    /// Interaction logic for ThayDoiQuyDinh.xaml
    /// </summary>
    public partial class ThayDoiQuyDinh : Window
    {

        public ThayDoiQuyDinh()
        {
            InitializeComponent();
        }
        DienThoaiDataContext db = new DienThoaiDataContext();
        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            
            var query1 = from t in db.CameraDetails
                    select t.MegaPixel.ToString();
            foreach (var item in query1)
            {
                cbCamera.Items.Add(item);
            }
            var query = from t in db.MemoryCards
                     select t.Size;
            foreach (var item in query)
            {
                cbTheNho.Items.Add(item);
            }
            var query2 = from t in db.MultiSims
                    select t.SimQuantity.ToString();
            foreach (var item in query2)
            {
                cbSim.Items.Add(item);
            }
            var query3 = from t in db.Manufacrurers select t.ManufacrurerName;
            foreach (var item in query3)
            {
                cbNhaSanXuat.Items.Add(item);
            }
            var query4 = from t in db.Suppliers
                    select t.Name;
            foreach (var item in query4)
            {
                cbNhaPhanPhoi.Items.Add(item);
            }
        }

        private string getCameraDetailID()
        {
            string ID = "";

            var query = from i in db.CameraDetails
                        select i.CameraDetailID;

            if (query.Count() == 0)
                ID = "C001";
            else
            {
                int temp = 0;
                foreach (var i in query)
                    temp = int.Parse(i.ToString().Substring(2)) + 1;
                if (temp < 10)
                    ID = "C00" + temp.ToString();
                else if (temp < 100)
                    ID = "C0" + temp.ToString();
                else
                    ID = "C" + temp.ToString();
            }
            return ID;
        }
        private string getMemoryCardID()
        {
            string ID = "";

            var query = from i in db.MemoryCards
                        select i.MemoryCardID;

            if (query.Count() == 0)
                ID = "MC001";
            else
            {
                int temp = 0;
                foreach (var i in query)
                    temp = int.Parse(i.ToString().Substring(2)) + 1;
                if (temp < 10)
                    ID = "MC00" + temp.ToString();
                else if (temp < 100)
                    ID = "MC0" + temp.ToString();
                else
                    ID = "MC" + temp.ToString();
            }
            return ID;
        }
        private string getSimID()
        {
            string ID = "";

            var query = from i in db.MultiSims
                        select i.MultiSimID;

            if (query.Count() == 0)
                ID = "S001";
            else
            {
                int temp = 0;
                foreach (var i in query)
                    temp = int.Parse(i.ToString().Substring(2)) + 1;
                if (temp < 10)
                    ID = "S00" + temp.ToString();
                else if (temp < 100)
                    ID = "S0" + temp.ToString();
                else
                    ID = "S" + temp.ToString();
            }
            return ID;
        }
        private string getManufacturerID()
        {
            string ID = "";

            var query = from i in db.Manufacrurers
                        select i.ManufacrurerID;

            if (query.Count() == 0)
                ID = "M001";
            else
            {
                int temp = 0;
                foreach (var i in query)
                    temp = int.Parse(i.ToString().Substring(2)) + 1;
                if (temp < 10)
                    ID = "M00" + temp.ToString();
                else if (temp < 100)
                    ID = "M0" + temp.ToString();
                else
                    ID = "M" + temp.ToString();
            }
            return ID;
        }
        private string getSupplierID()
        {
            string ID = "";

            var query = from i in db.Suppliers
                        select i.SupplierID;

            if (query.Count() == 0)
                ID = "NPP00001";
            else
            {
                int temp = 0;
                foreach (var i in query)
                    temp = int.Parse(i.ToString().Substring(3)) + 1;
                if (temp < 10)
                    ID = "NPP0000" + temp.ToString();
                else if (temp < 100)
                    ID = "NPP000" + temp.ToString();
                else if (temp < 1000)
                    ID = "NPP00" + temp.ToString();
                else if (temp < 10000)
                    ID = "NPP0" + temp.ToString();
                else
                    ID = "NPP" + temp.ToString();
            }
            return ID;
        }
        private Utility util;
        private bool KiemTraThem()
        {
            if (txtTheNho.Text == "")
                return false;
            else
                return true;
        }
        private void imgThem_MouseDown(object sender, MouseButtonEventArgs e)
        {
            if (chbCamera.IsChecked == true)
            {
                var T = from t in db.CameraDetails
                        where t.MegaPixel == txtCamera.Text
                        select t
                        ;
                if (T.Count() == 0)
                {
                    CameraDetail newCameraDetail = new CameraDetail();
                    newCameraDetail.CameraDetailID = getCameraDetailID();
                    newCameraDetail.MegaPixel = txtCamera.Text;
                    db.CameraDetails.InsertOnSubmit(newCameraDetail);
                    db.SubmitChanges();
                    var query = from t in db.CameraDetails
                                select t.MegaPixel;
                    util = new Utility();
                    util.ClearCombobox(cbCamera);
                    foreach (var item in query)
                    {
                        cbCamera.Items.Add(item);
                    }
                    MessageBox.Show("Đã thêm Camera thành công.");
                    cbCamera.SelectedIndex = 0;
                }
                else
                    MessageBox.Show("Đã tồn tại loại camera này.");
            }
            if (chbTheNho.IsChecked == true)
            {
                var T = from t in db.MemoryCards
                        where t.Size == txtTheNho.Text
                        select t;
             
                    if (T.Count() == 0)
                    {
                        MemoryCard newMemoryCard = new MemoryCard();
                        newMemoryCard.MemoryCardID = getMemoryCardID();
                        newMemoryCard.Size = txtTheNho.Text;
                        db.MemoryCards.InsertOnSubmit(newMemoryCard);
                        db.SubmitChanges();
                        var query = from t in db.MemoryCards
                                    select t.Size;
                        util = new Utility();
                        util.ClearCombobox(cbTheNho);
                        foreach (var item in query)
                        {
                            cbTheNho.Items.Add(item);
                        }
                        MessageBox.Show("Đã thêm Thẻ nhớ thành công.");
                        cbTheNho.SelectedIndex = 0;
                    }
                    else
                        MessageBox.Show("Đã tồn tại loại thẻ nhớ này.");
                
            }
            if (chbSim.IsChecked == true)
            {
                if (KiemTraThem() == true)
                {
                    var T = from t in db.MultiSims
                            where t.SimQuantity == int.Parse(txtSoSim.Text)
                            select t;
                    if (T.Count() == 0)
                    {
                        MultiSim newMultiSim = new MultiSim();
                        newMultiSim.MultiSimID = getSimID();
                        try
                        {
                            newMultiSim.SimQuantity = int.Parse(txtSoSim.Text);
                        }
                        catch
                        {
                            MessageBox.Show("Chỉ được nhập số.");
                        }
                        db.MultiSims.InsertOnSubmit(newMultiSim);
                        db.SubmitChanges();
                        var query = from t in db.MultiSims
                                    select t.SimQuantity;
                        util = new Utility();
                        util.ClearCombobox(cbSim);
                        foreach (var item in query)
                        {
                            cbSim.Items.Add(item);
                        }
                        MessageBox.Show("Đã thêm số SIM hỗ trợ thành công.");
                        cbSim.SelectedIndex = 0;
                    }
                    else
                    {
                        MessageBox.Show("Đã tồn tại loại SIM hỗ trợ này.");
                    }
                }
                else
                {
                    MessageBox.Show("Ô Sim không được để trống.");
                }
            }
            if (chbNhaSanXuat.IsChecked == true)
            {
                var T = from t in db.Manufacrurers
                        where t.ManufacrurerName == txtNhaSanXuat.Text
                        select t;
                if (T.Count() == 0)
                {
                    Manufacrurer newManufacturer = new Manufacrurer();
                    newManufacturer.ManufacrurerID = getManufacturerID();
                    newManufacturer.ManufacrurerName = txtNhaSanXuat.Text;
                    db.Manufacrurers.InsertOnSubmit(newManufacturer);
                    db.SubmitChanges();
                    var query = from t in db.Manufacrurers
                                select t.ManufacrurerName;
                    util = new Utility();
                    util.ClearCombobox(cbNhaSanXuat);
                    foreach (var item in query)
                    {
                        cbNhaSanXuat.Items.Add(item);
                    }
                    MessageBox.Show("Đã thêm nhà sản xuất thành công.");
                    cbNhaSanXuat.SelectedIndex = 0;
                }
                else
                    MessageBox.Show("Đã tồn tại nhà sản xuất này.");
            }
            if (chbNhaPhanPhoi.IsChecked == true)
            {
                var T = from t in db.Suppliers
                        where t.Name == txtNhaPhanPhoi.Text
                        select t;
                if (T.Count() == 0)
                {
                    Supplier newSupplier = new Supplier();
                    newSupplier.SupplierID = getSupplierID();
                    newSupplier.Name = txtNhaPhanPhoi.Text;
                    db.Suppliers.InsertOnSubmit(newSupplier);
                    db.SubmitChanges();
                    var query = from t in db.Suppliers
                                select t.Name;
                    util = new Utility();
                    util.ClearCombobox(cbNhaPhanPhoi);
                    foreach (var item in query)
                    {
                        cbNhaPhanPhoi.Items.Add(item);
                    }
                    MessageBox.Show("Đã thêm nhà phân phối thành công.");
                    cbNhaPhanPhoi.SelectedIndex = 0;
                }
                else
                    MessageBox.Show("Đã tồn tại nhà phân phối này.");
            }
        }

        
        private void chbCamera_Checked(object sender, RoutedEventArgs e)
        {
            cbCamera.IsEnabled = true;
            txtCamera.IsEnabled = true;
        }

        private void chbCamera_Unchecked(object sender, RoutedEventArgs e)
        {
            cbCamera.IsEnabled = false;
            txtCamera.IsEnabled = false;
        }

        private void chbTheNho_Checked(object sender, RoutedEventArgs e)
        {
            cbTheNho.IsEnabled = true;
            txtTheNho.IsEnabled = true;
        }

        private void chbTheNho_Unchecked(object sender, RoutedEventArgs e)
        {
            cbTheNho.IsEnabled = false;
            txtTheNho.IsEnabled = false;
        }

        private void chbSim_Checked(object sender, RoutedEventArgs e)
        {
            cbSim.IsEnabled = true;
            txtSoSim.IsEnabled = true;
        }

        private void chbSim_Unchecked(object sender, RoutedEventArgs e)
        {
            cbSim.IsEnabled = false;
            txtSoSim.IsEnabled = false;
        }

        private void chbNhaSanXuat_Checked(object sender, RoutedEventArgs e)
        {
            cbNhaSanXuat.IsEnabled = true;
            txtNhaSanXuat.IsEnabled = true;
        }

        private void chbNhaSanXuat_Unchecked(object sender, RoutedEventArgs e)
        {
            cbNhaSanXuat.IsEnabled = false;
            txtNhaSanXuat.IsEnabled = false;
        }

        private void chbNhaPhanPhoi_Checked(object sender, RoutedEventArgs e)
        {
            cbNhaPhanPhoi.IsEnabled = true;
            txtNhaPhanPhoi.IsEnabled = true;
        }

        private void chbNhaPhanPhoi_Unchecked(object sender, RoutedEventArgs e)
        {
            cbNhaPhanPhoi.IsEnabled = false;
            txtNhaPhanPhoi.IsEnabled = false;
        }

        private void imgSua_MouseDown(object sender, MouseButtonEventArgs e)
        {

            if (chbCamera.IsChecked == true)
            {
                var T = from t in db.CameraDetails
                        where t.MegaPixel == txtCamera.Text
                        select t
                    ;
                if (T.Count() == 0)
                {
                    CameraDetail existCamera = (from t in db.CameraDetails
                                                where t.MegaPixel == cbCamera.SelectedItem.ToString()
                                                select t).Single();
                    existCamera.MegaPixel = txtCamera.Text;
                    db.SubmitChanges();
                    var query = from t in db.CameraDetails
                                select t.MegaPixel;
                    util = new Utility();
                    util.ClearCombobox(cbCamera);
                    foreach (var item in query)
                    {
                        cbCamera.Items.Add(item);
                    }
                    MessageBox.Show("Đã sửa Camera thành công.");
                    cbCamera.SelectedIndex = 0;
                }
                else
                    MessageBox.Show("Đã tồn tại loại thẻ nhớ này");
            }
            

            if (chbTheNho.IsChecked == true)
            {

                var T = from t in db.MemoryCards
                        where t.Size == txtTheNho.Text
                        select t; 
                    ;
                    if (T.Count() == 0)
                    {
                        MemoryCard existMemoryCard = (from t in db.MemoryCards

                                                      where t.Size == cbTheNho.SelectedItem.ToString()
                                                      select t).Single();
                        existMemoryCard.Size = txtTheNho.Text;
                        db.SubmitChanges();
                        var query = from t in db.MemoryCards
                                    select t.Size;
                        util = new Utility();
                        util.ClearCombobox(cbTheNho);
                        foreach (var item in query)
                        {
                            cbTheNho.Items.Add(item);
                        }
                        MessageBox.Show("Đã sửa Thẻ nhớ thành công.");
                        cbTheNho.SelectedIndex = 0;
                    }
                    else
                        MessageBox.Show("Loại thẻ này đã tồn tại.");
            
            }
            if (chbSim.IsChecked == true)
            {
                var T = from t in db.MultiSims
                        where t.SimQuantity == int.Parse(txtSoSim.Text)
                        select t;
                if (T.Count() == 0)
                {
                    MultiSim existSim = (from t in db.MultiSims

                                         where t.SimQuantity.ToString() == cbSim.SelectedItem.ToString()
                                         select t).Single();
                    try
                    {
                        existSim.SimQuantity = int.Parse(txtSoSim.Text);
                    }
                    catch
                    {
                        MessageBox.Show("SIM hỗ trợ chỉ được nhập số.");
                    }
                    db.SubmitChanges();
                    var query = from t in db.MultiSims
                                select t.SimQuantity;
                    util = new Utility();
                    util.ClearCombobox(cbSim);
                    foreach (var item in query)
                    {
                        cbSim.Items.Add(item);
                    }
                    MessageBox.Show("Đã sửa số SIM hỗ trợ thành công.");
                    cbSim.SelectedIndex = 0;
                }
                else
                    MessageBox.Show("Đã tồn tại số SIM hỗ trợ này.");
            }
            if (chbNhaSanXuat.IsChecked == true)
            {

                var T = from t in db.Manufacrurers
                        where t.ManufacrurerName == txtNhaSanXuat.Text
                        select t;
                ;
                if (T.Count() == 0)
                {
                    Manufacrurer existManufacturer = (from t in db.Manufacrurers

                                                  where t.ManufacrurerName == cbNhaSanXuat.SelectedItem.ToString()
                                                  select t).Single();
                    existManufacturer.ManufacrurerName = txtNhaSanXuat.Text;
                    db.SubmitChanges();
                    var query = from t in db.Manufacrurers
                                select t.ManufacrurerName;
                    util = new Utility();
                    util.ClearCombobox(cbNhaSanXuat);
                    foreach (var item in query)
                    {
                        cbNhaSanXuat.Items.Add(item);
                    }
                    MessageBox.Show("Đã sửa nhà sản xuất thành công.");
                    cbNhaSanXuat.SelectedIndex = 0;
                }
                else
                    MessageBox.Show("Nhà sản xuất này đã tồn tại.");

            }
            if (chbNhaPhanPhoi.IsChecked == true)
            {

                var T = from t in db.Suppliers
                        where t.Name == txtNhaPhanPhoi.Text
                        select t;
                ;
                if (T.Count() == 0)
                {
                    Supplier existSupplier = (from t in db.Suppliers

                                                      where t.Name == cbNhaPhanPhoi.SelectedItem.ToString()
                                                      select t).Single();
                    existSupplier.Name = txtNhaPhanPhoi.Text;
                    db.SubmitChanges();
                    var query = from t in db.Suppliers
                                select t.Name;
                    util = new Utility();
                    util.ClearCombobox(cbNhaPhanPhoi);
                    foreach (var item in query)
                    {
                        cbNhaPhanPhoi.Items.Add(item);
                    }
                    MessageBox.Show("Đã sửa nhà phân phối thành công.");
                    cbNhaPhanPhoi.SelectedIndex = 0;
                }
                else
                    MessageBox.Show("Nhà phân phối này đã tồn tại.");

            }
        }

       
    }
}
